package main

import "fmt"

// 方法123均可以声明全局变量
var globalA = 100
var globalB float32 = 100

// :=方式声明全局变量会报错
// globalC:=200

func main() {
	// 方法1：声明一个变量 默认值是0
	var a int
	fmt.Println(a)
	fmt.Printf("type of a = %T\n", a) // 格式化输出

	// 方法2：声明一个变量，初始化一个值
	var b int = 100
	fmt.Println(b)

	// 方法3：在初始化的时候，省略数据类型，通过值自动疲累当前变量的数据类型
	var c = "100"
	fmt.Printf("c = %s, type of c = %T\n", c, c)

	// 方法四：省去var关键字，直接自动匹配
	d := 100
	fmt.Printf("d = %d, type of d = %T\n", d, d)

	fmt.Printf("globalA = %d, type of globalA = %T\n", globalA, globalA)
	fmt.Printf("globalB = %f, type of globalB = %T\n", globalB, globalB)

	// 声明多个变量
	var xx, yy int = 100, 200
	fmt.Printf("xx=%d, yy=%d\n", xx, yy)
	var m, n = 100, "200"
	fmt.Printf("m=%d, n=%s\n", m, n)

	var (
		x      = "100"
		y bool = true
	)
	fmt.Printf("x=%s, y=%t\n", x, y)
}
